package cn.iocoder.yudao.module.system.config;

import cn.iocoder.yudao.module.system.service.book.BookUploadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import javax.annotation.Resource;

/**
 * 绘本上传定时任务配置
 *
 * @author 芋道源码
 */
@Configuration
@EnableScheduling
@Slf4j
public class BookUploadScheduleConfig {

    @Resource
    private BookUploadService bookUploadService;

    /**
     * 定时清理过期临时文件
     * 每小时执行一次
     */
    @Scheduled(fixedRate = 60 * 60 * 1000) // 1小时 = 60分钟 * 60秒 * 1000毫秒
    public void cleanupExpiredTempFiles() {
        log.info("开始执行定时清理过期临时文件任务");
        try {
            bookUploadService.cleanupExpiredTempFiles();
            log.info("定时清理过期临时文件任务执行完成");
        } catch (Exception e) {
            log.error("定时清理过期临时文件任务执行失败", e);
        }
    }

    /**
     * 系统启动时的初始化清理
     * 延迟5分钟后执行，避免与系统启动冲突
     */
    @Scheduled(initialDelay = 5 * 60 * 1000, fixedRate = 60 * 60 * 1000)
    public void initialCleanup() {
        log.info("系统启动后执行初始化清理任务");
        try {
            bookUploadService.cleanupExpiredTempFiles();
            log.info("初始化清理任务执行完成");
        } catch (Exception e) {
            log.error("初始化清理任务执行失败", e);
        }
    }
} 